package jm.nj.demo05mian.demo03;

import jdk.internal.org.objectweb.asm.commons.TryCatchBlockSorter;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

/*
 *多异常处理
 *       捕获异常处理:
 * `         1.多个异常分别处理
 *           2.多个异常一次捕获多次处理
 *           3.多个异常一次捕获一次处理
 * 声明抛出异常:
 *           声明上使用,一次声明多个异常
 * */
public class Demo03Exception {
    public static void main(String[] args) {
        //1多个异常分别处理
        FileReader fr = null;
        try {
            fr = new FileReader("a.txt");
        } catch (FileNotFoundException e1) {
            System.out.println("123");
        }
        try {
            fr.read();
        }catch (Exception e1){
            System.out.println("345");
        }
        try {
            fr.close();
        }catch (Exception e1){
            System.out.println("678");
        }
        //2多次异常一次捕获多次处理
/*        try {
            fr = new FileReader("a.txt");
            fr.read();
            fr.close();
        } catch (FileNotFoundException e1) {
            System.out.println("123");
        }catch (Exception e1) {
            System.out.println("456");
        }*/


        //3 多个异常一次捕获一次处理
        try {
         /*   fr =new FileReader("a.txt");
            fr.read();
            fr.close();*/
            int i= 8/0 ;
        }catch (Exception e1){
            System.out.println(e1);
        }

/*       // int[] arr = new int[3];
        int[] arr = null;
        *//*
         * 两个异常一次捕获一次处理
         * *//*
        try {
            int element = getElementq(3,arr);
            System.out.println(element);

            *//*
         * Exception e = new NullPointerException("传递的数组是空的");  多态
         * Exception e = new RuntimeException("传递的索引不在数组范围内"); 多态
         * *//*
        }catch (Exception e){
            System.out.println(e);
        }*/
    }

    private static int getElementq(int index, int[] arr) throws NullPointerException, RuntimeException {
        if (arr == null) {
            throw new NullPointerException("传递的数组是空的");
        }

        if (index < 0 || index > arr.length - 1) {
            throw new RuntimeException("传递的索引值不在数组范围内");
        }
        return arr[index];
    }


}
